// 分类模块
import { findAllCategory } from '@/api/category'
import { topCategory } from '@/api/constants'

export default {
  namespaced: true,
  state: () => {
    return {
      // 分类信息集合
      // 在这里如果list是一个空的数组，看不见默认的的9个分类，数据必须在请求回来之后才能展示
      // 所以:  根据在constants重视的常量数据生成一个默认的顶级分类数据（大类）,不会出现空白的情况
      list: topCategory.map((item) => {
        return { name: item }
      })
    }
  },
  // 加载数据成功之后需要修改list所以需要mutations函数
  mutations: {
    setList(state, headCategory) {
      state.list = headCategory
    },
    // 修改当前一级分类下的open为true
    show(state, item) {
      // 点击哪一个显示哪一个
      const category = state.list.find((category) => {
        return category.id === item.id
      })
      category.open = true
    },
    // 修改当前一级分类下的open为false
    hide(state, item) {
      const category = state.list.find((category) => {
        return category.id === item.id
      })
      category.open = false
    }
  },
  actions: {
    async getList({ commit }) {
      // 在这里请求数据，成功之后携带数据项向mutations发送请求，不成功会在这里一直等着
      const { result } = await findAllCategory()
      //  获取数据成功，提交mutations进行数据修改
      result.forEach((item) => {
        item.open = false
      })
      commit('setList', result)
    }
  }
}
